// 执行结果不同

// setTimeout(() => {
//   console.info('timeout')
// })

// setImmediate(() => {
//   console.info('immediate')
// })

const fs = require('fs')
fs.readFile('./m.js', () => {
  setTimeout(() => {
    console.info('timeout')
  })
  setImmediate(() => {
    console.info('immediate')
  })
})

// readFile 在 Poll 队列
// 把 setTimeout 加入到 timer 队列
// 把 setImmediate 加入到 check 队列
// ❗❗❗ 注意:执行完 readFile 往下执行, 到了 check 队列

/**
 * NodeJS 事件队列说明 (🧡代表需要关注的队列)
 *  1-timers 🧡 : 执行 setTimeout 与 setInterval 回调
 *  2-pending callbacks: 执行系统操作的回调, 例如 tcp/udp
 *  3-idle, prepare: 在系统内部进行使用
 *  4-poll  🧡: 执行与 I/O相关的回调
 *  5-check 🧡: 执行 setImmediate 中的回调
 *  6-close callback: 执行 close 事件的回调
 */
